(include "sys/list/class.inc")
(include "class/hmap/class.inc")

(def-class 'component 'hmap)
(dec-method :vtable 'gui/component/vtable)
(dec-method :init 'gui/component/init :static '(r0 r1))
(dec-method :find_owner 'gui/component/find_owner :static '(r0) '(r0 r1))
(dec-method :connect 'gui/component/connect :static '(r0 r1) '(r0))
(dec-method :emit 'gui/component/emit :static '(r0) '(r0))
(dec-method :get_prop 'gui/component/get_prop :static '(r0 r1) '(r0 r1))
(dec-method :ref_prop 'gui/component/ref_prop :static '(r0 r1) '(r0 r1))
(dec-method :set_prop 'gui/component/set_prop :static '(r0 r1 r2) '(r0))

(dec-method :set_long_prop 'gui/component/set_long_prop :static '(r0 r1 r2) '(r0))
(dec-method :get_long_prop 'gui/component/get_long_prop :static '(r0 r1) '(r0 r1))
(dec-method :set_font_prop 'gui/component/set_font_prop :static '(r0 r1 r2 r3) '(r0))
(dec-method :set_str_prop 'gui/component/set_str_prop :static '(r0 r1 r2) '(r0))

(dec-method :deinit 'gui/component/deinit :override)

(dec-method :lisp_connect 'gui/component/lisp_connect :static '(r0 r1) '(r0 r1))

(def-struct 'component 'hmap)
	(ptr 'target_ids)
	(long 'id)
	(struct 'owner_id 'id)
(def-struct-end)
